import java.util.Comparator;
import java.util.TreeSet;

/*
    TreeSet集合中元素可排序的第二种方式：使用比较器的方式

    最终结论：
        放到TreeSet或者TreeMap集合key部分的元素想做到排序，两种方式：
            * 放在集合中的元素实现java.lang.Comparable接口
            * 在构造TreeSet或者TreeMap集合的时候给他传一个比较器对象 (java.util.Comparator)
    Comparable和Comparator选择
        当比较规则不会发生改变的时候，或者说当比较规则只有1个的时候，建议实现Comparable接口
        如果比较规则有多个，并且需要多个比较规则频繁切换的时候，建议使用Comparator接口，符合OCP设计


 */
public class TreeSetTest02 {
    public static void main(String[] args) {
        TreeSet<WuGui> wuGuis = new TreeSet<>(new WuGuiComparator());

        wuGuis.add(new WuGui(1000));
        wuGuis.add(new WuGui(800));
        wuGuis.add(new WuGui(810));

        for (WuGui w : wuGuis) {
            System.out.println(w);
        }
    }
}

class WuGui{
    int age;

    public WuGui(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "WuGui{" +
                "age=" + age +
                '}';
    }
}

//单独编写一个比较器
//比较器实现java.util.Comparator接口。(Comparable是java.lang包下的，Comparator是java.util包下的)

class WuGuiComparator implements Comparator<WuGui>{

    @Override
    public int compare(WuGui o1, WuGui o2) {
        return o1.age - o2.age;
    }
}